package file;

import java.io.File;
import java.io.FileFilter;

/**
 * 重载的listFiles方法，可以传入一个文件过滤器，那么该方法可以获取只满足过滤器要求
 * 的所有子项
 * @author 范传奇
 *
 */
public class ListFilesDemo2 {
	public static void main(String[] args) {
		/*
		 * 获取当前目录下所有名字以"."开始的子项
		 */
		File file = new File(".");
		if(file.isDirectory()) {
//			MyFilter filter = new MyFilter();
		
			//匿名内部类的写法
			FileFilter filter = new FileFilter() {
				public boolean accept(File file) {
					return file.getName().startsWith(".");
				}				
			};
			
			
			/*
			 * 重载的listFiles方法在获取该目录中所有子项时，会先将每一个子项
			 * (File对象)都调用一次给定的过滤器的accept方法，并最终将返回为
			 * 为true的所有子项返回。
			 */
			File[] subs = file.listFiles(filter);
			System.out.println(subs.length);
			for(int i=0;i<subs.length;i++) {
				File sub = subs[i];
				System.out.println(sub.getName());
			}
		}
	}
}

class MyFilter implements FileFilter{
	/**
	 * accept方法是用来定义过滤规则的。
	 * 当参数file表示的文件或目录符合过滤要求时该方法应当返回为true，否则返回
	 * 为false
	 */
	public boolean accept(File file) {
		//名字是以"."开始的
		return file.getName().startsWith(".");
	}
}









